﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AcessoDados;
using Dados.Mappers;

namespace Regra
{
    public class RegraChampion
    {
        #region Metodos


        #region Carregar Lista Champions
        /// <summary>
        /// Carrega a lista completa de Champions
        /// </summary>
        /// <param name="listaCategoriaCompleta">Lista completa de categoria Champion</param>
        /// <returns>List<Champion> Completa</returns>
        public List<Champion> CarregarListaChampions(List<CategoriaChampion> listaCategoriaCompleta)
        {
            List<Champion> retorno = null;
            AcessoChampion dao = null;
            try
            {
                dao = new AcessoChampion();
                retorno = dao.CarregarListaChampions(listaCategoriaCompleta);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                dao = null;
            }

            return retorno;
        }
        #endregion

        public List<Champion> FiltrarChampions(string nome, List<Champion> listaChamp)
        {
            var championFiltro = (from champion in listaChamp
                                  where champion.Nome.Trim().ToUpper().Contains(nome.Trim().ToUpper())
                                  select champion).ToList();

            return championFiltro;

            //this.dgChampion.DataSource = this.MapperChampionToDataTable(listaFiltro);
        }

        public List<Champion> FiltrarChampions(List<Champion> listaChamp, List<int> listaCategoriaSelecionada)
        {
            List<Champion> retorno = null;
            if (listaCategoriaSelecionada.Count > 0)
            {

                var filtroChamp = (from c in listaChamp
                                   from o in c.Categorias
                                   join j in listaCategoriaSelecionada on o.Id equals j
                                   select c).Distinct().ToList();

                foreach (int idAt in listaCategoriaSelecionada)
                {
                    filtroChamp = (from c in filtroChamp
                                   from o in c.Categorias
                                   where idAt == o.Id
                                   select c).ToList();
                }

                retorno = filtroChamp;
            }
            return retorno;
        }

        /*public int BuscarIdMaximoChampion()
        {
            List<CategoriaChampion> listaCompletaCategoria = null;
            try
            {
                listaCompletaCategoria = this.CarregarListaCategoria();
                return this.BuscarIdMaximoCategoria(listaCompletaCategoria);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }*/


        #endregion
    }
}